# 初始化三维DP数组，大小为2023x11x2023
dp = [[[0] * 2023 for _ in range(11)] for _ in range(2023)]

# 初始化：当物品数为0时，只有一种选择方式（不选任何物品）
for i in range(2023):
    dp[i][0][0] = 1

# 动态规划主循环
for i in range(1, 2023):  # 遍历物品
    for j in range(1, 11):  # 遍历选择物品的数量
        for k in range(1, 2023):  # 遍历背包容量
            if k < i:
                # 当前物品重量大于背包容量，无法选择
                dp[i][j][k] = dp[i-1][j][k]
            else:
                # 当前物品可以选择或不选择
                dp[i][j][k] = dp[i-1][j][k] + dp[i-1][j-1][k-i]

# 输出结果：选择10个物品，总重量为2022的方案数
print(dp[2022][10][2022])
